package cn.lhf.cd.controller;

import cn.lhf.cd.annotation.FXController;
import javafx.application.Platform;
import javafx.scene.control.Label;

import java.net.URL;
import java.util.ResourceBundle;
import java.util.Timer;
import java.util.TimerTask;

@FXController(path = "/ui/success.fxml")
public class SuccessController extends ChildrenController {
    public Label resultLabel;
    private Timer timer;
    private int sec = 30;
    private String format;

    @Override
    public String getTitle() {
        return "操作成功";
    }

    @Override
    public void bind(MainController mainController, Object... args) {
        super.bind(mainController, args);       //执行父类操作
        if (args != null && args.length > 0) {
            this.format = (String) args[0];     //第一个参数：文本格式
            if (args.length > 1)
                this.sec = (Integer) args[1];   //第二个参数：初始秒数
            resultLabel.setText(String.format(format, sec));
            sec --;
            timer = new Timer();
            timer.schedule(newTask(), 1000);    //进入倒计时
        }
    }

    @Override
    public void onBtnLeft4() throws Exception {
        getMainController().goHome();
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {
    }

    /**
     * 新建任务，一秒一次
     * @return 定时任务
     */
    private TimerTask newTask() {
        return new TimerTask() {
            @Override
            public void run() {
                Platform.runLater(() -> {
                    resultLabel.setText(String.format(format, sec));    //更新文本
                    if (sec > 0) {
                        timer.schedule(newTask(), 1000);        //时间未到，进入下一秒
                        sec --;
                    } else {
                        getMainController().goHome();               //时间到了，返回首页
                    }
                });
            }
        };
    }
}
